package com.junxonline.instant.common.enumeration;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 管理后台错误枚举类
 *
 * @author JunX
 * @date 2021-06-25
 */
@Getter
@AllArgsConstructor
public enum AdminErrorEnum {

    /**
     * 通用错误
     */
    SUCCESS("成功", 200),
    PARAMS_IS_NULL("参数格式不正确", 500),
    PARAMS_PARSE_ERROR("未找到有效数据|解析错误", 500),
    PARAMS_NOT_MATCH("参数格式不正确", 500),
    DATA_IS_NOT_EXISTS("数据不存在", 500),
    DATA_IS_EXISTS("数据已存在", 500),
    ASSERT_ERROR("断言异常", 400),
    AUTH_FAIL("身份认证失败", 401),
    ACCOUNT_IS_DISABLED("该账号已被禁用", 401),
    ACCOUNT_IS_DEL("该账号已被删除", 401),
    PERMISSION_FAIL("无权限访问该资源", 402),
    NOT_FOUND("未找到该资源", 404),
    REQUEST_TYPE_NOT_SUPPORT("请求类型不支持", 405),
    INTERNAL_SERVER_ERROR("服务器错误", 500),
    RPC_SERVICE_ERROR("RPC服务连接失败", 500),
    SERVER_BUSY("服务器繁忙", 503),

    /**
     * 帐号业务错误
     */
    ACCOUNT_USERNAME_PASSWORD_ERROR("用户名或密码错误", 100100),
    ACCOUNT_LOGOUT_ERROR("注销失败", 100101),
    ACCOUNT_DISABLED_ERROR("该账号已被禁用", 100102),
    ACCOUNT_IS_DEL_ERROR("该账号已被删除", 100103),
    ACCOUNT_OLD_PWD_ERROR("旧密码不正确", 100104),
    ACCOUNT_NEW_PWD_EQUAL_OLD_PWD_ERROR("新密码不能与旧密码相同", 100105),
    ACCOUNT_NOT_EXIST_ERROR("帐号不存在", 100106),

    /*************************** 系统管理 ***************************/

    /**
     * 菜单管理管理业务错误
     */
    // TODO

    /**
     * 组织机构管理业务错误
     */
    ORGANIZATION_PLATFORM_NOT_DISABLE("平台无法禁用", 100300),
    ORGANIZATION_PLATFORM_NOT_DELETE("平台无法删除", 100301),

    /**
     * 角色管理业务错误
     */
    USER_ADMIN_ROLE_NOT_DISABLE("超级管理员角色无法禁用", 100400),
    USER_ADMIN_ROLE_NOT_DELETE("超级管理员角色无法删除", 100401),

    /**
     * 用户管理业务错误
     */
    USER_ADMIN_NOT_DISABLE("超级管理员无法禁用", 100500),
    USER_ADMIN_NOT_DELETE("超级管理员无法删除", 100501),
    USER_ADMIN_NOT_RESET_PASSWORD("超级管理员无法重置密码", 100502),

    /**
     * 数据字典业务错误
     */
    // TODO

    /**
     * 参数管理业务错误
     */
    // TODO

    /**
     * 区域管理业务错误
     */
    // TODO

    /**
     * 数据源管理业务错误
     */
    // TODO

    /*************************** 终端管理 ***************************/

    /**
     * 终端管理业务错误
     */
    // TODO

    /**
     * 分组管理业务错误
     */
    // TODO

    ;

    /**
     * 错误信息
     */
    private final String msg;

    /**
     * 错误码
     */
    private final Integer code;

    /**
     * 根据Value获取枚举类对象
     *
     * @param code code
     * @return OperationEnum
     */
    public static AdminErrorEnum getByCode(Integer code) {
        for (AdminErrorEnum adminErrorEnum : values()) {
            if (adminErrorEnum.getCode().equals(code)) {
                return adminErrorEnum;
            }
        }
        return null;
    }

    /**
     * 根据Value获取枚举类对象的Message
     *
     * @param code code
     * @return msg
     */
    public static String codesOf(Integer code) {
        for (AdminErrorEnum adminErrorEnum : values()) {
            if (adminErrorEnum.getCode().equals(code)) {
                return adminErrorEnum.getMsg();
            }
        }
        return null;
    }

}
